import { ElMessageBox, ElMessage } from 'element-plus'
import 'element-plus/theme-chalk/el-message-box.css'
import 'element-plus/theme-chalk/el-message.css'

export default {
    /**
     * 提示框
     * @param {String} message 消息内容
     * @param {Function} fn 点击确定后执行的函数
     */
    alert: (message, fn) => {
        ElMessageBox.alert(message, undefined, {
            autofocus: true,
            showClose: false,
            confirmButtonText: '确定',
            callback: () => !fn || fn(),
        });
    },

    /**
     * 确认框
     * @param {String} message 消息内容
     * @param {Function} fn 点击确定后执行的函数
     * @param {'confirm' | 'remove'} action 需要确认的操作行为
     * @param {Function} closeFn 消息框关闭前执行的函数
     */
    confirm: (message, fn, closeFn, confirm_btn_cls, title, confirm_btn_text, cancel_btn_text) => {
        ElMessageBox.confirm(message, title, {
            autofocus: false,
            draggable: true,
            confirmButtonClass: confirm_btn_cls?confirm_btn_cls:"el-button--danger",
            confirmButtonText: confirm_btn_text,
            cancelButtonText: cancel_btn_text,
            beforeClose: (_action, _instance, done) => {
                !closeFn || closeFn()
                done()
            },
            callback: (action) => !(action == 'confirm') || !fn || fn(),
        });
    },

    /**
     * 成功提示
     * @param {String} message 消息内容
     */
    success: (message) => ElMessage.success(message),

    /**
     * 警告提示
     * @param {String} message 消息内容
     */
    warning: (message) => ElMessage.warning(message),

    /**
     * 信息提示
     * @param {String} message 消息内容
     */
    info: (message) => ElMessage.info(message),

    /**
     * 错误提示
     * @param {String} message 消息内容
     * @param {Function} fn 消息关闭后执行的函数
     * @param {Number} duration 消息显示的毫秒数
     */
    error: (message, fn, duration = 5000) => ElMessage.error({
        message,
        duration,
        onClose: fn
    }),
}